www.gusucode.com > matlab编程NSCT分解 图像融合 各个融合指标评价体系 分解源码程序 > matlab编程NSCT分解 图像融合 各个融合指标评价体系 分解源码程序/NSCT/invIHS.m
function C =invIHS(I,H,S) %%%%%%%%%%%%%%反IHS变换,得到融合图像%%%%%%%%%% hsi=cat(3,H,S,I); C=iNIHS2RGB(hsi); %C=rgb2gray(C); %image=log(1+abs(fftshift(fft2(C)))); end function C=iNIHS2RGB(hsi) HV=hsi(:,:,1)*2*pi; SV=hsi(:,:,2); IV=hsi(:,:,3); R=zeros(size(HV)); G=zeros(size(HV)); B=zeros(size(HV)); x=(HV); y=2.*pi./3; I1=2./3-((mod(x,y)-pi./3)./pi); %RG Sector % id=find((0<=HV)& (HV<2*pi/3)); id=find((IV<=I1)& (HV>=0)& (HV<(2.*pi./3)) & (IV<=(2./3-(HV-pi./3)./pi)) ); B(id)=IV(id).*(1-SV(id)); R(id)=IV(id).*(1+SV(id).*cos(HV(id))./cos(pi/3-HV(id))); G(id)=3*IV(id)-(R(id)+B(id)); %BG Sector % id=find((2*pi/3<=HV)& (HV<4*pi/3)); id=find((IV<=I1)&(HV>=(2.*pi./3))& (HV<4.*pi./3)& (IV<=(2./3-(HV-pi)./pi))); R(id)=IV(id).*(1-SV(id)); G(id)=IV(id).*(1+SV(id).*cos(HV(id)-2*pi/3)./cos(pi-HV(id))); B(id)=3*IV(id)-(R(id)+G(id)); %BR Sector % id=find((4*pi/3<=HV)& (HV<2*pi)); id=find((IV<=I1)&(HV>=4.*pi./3)& (HV<2.*pi)& (IV<=(2./3-(HV-(2.*pi-pi./3))./pi))); G(id)=IV(id).*(1-SV(id)); B(id)=IV(id).*(1+SV(id).*cos(HV(id)-4*pi/3)./cos(5*pi/3-HV(id))); R(id)=3*IV(id)-(G(id)+B(id)); % -----------END iNIHS to RGB for HLOWER--------------------------- % --------- iNIHS to RGB transformation for color points in HUPPER------- %section YC id=find((IV>I1)& pi./3<(HV)& (HV<=pi)& (IV>(1./3+(HV-(2.*pi./3))./pi))); HV(id)=HV(id)-4.*pi./3; G(id)=IV(id).*(1-SV(id))+SV(id); B(id)=1-(1-IV(id)).*(1+(SV(id).*cos(HV(id)))./cos(pi./3-HV(id))); R(id)=3.*IV(id)-(G(id)+B(id)); %section CM id=find((IV>I1)&(pi<HV)& (HV<=(2.*pi-pi./3))& (IV>(1./3+(HV-(4.*pi./3))./pi))); B(id)=IV(id).*(1-SV(id))+SV(id); R(id)=1-(1-IV(id)).*(1+(SV(id).*cos(HV(id)))./cos(pi./3-HV(id))); G(id)=3*IV(id)-(B(id)+R(id)); %section MY id=find((IV>I1)&((HV>-pi./3)& (HV<=0)& (IV>1./3+(2.*pi-HV)/pi)) | ((HV>0) & (HV<=pi./3) & (IV>(1./3+HV./pi)))); HV(id)=HV(id)-2.*pi./3; R(id)=IV(id).*(1-SV(id))+SV(id); G(id)=1-(1-IV(id)).*(1+(SV(id).*cos(HV(id)))./cos(pi./3-HV(id))); B(id)=3.*IV(id)-(R(id)+G(id)); %-------END iNIHS To RGB for HUPPER------------------------- C=cat(3,R,G,B); C=max(min(C,1),0); end